function myType (target) {
  // 分两类：原始值和引用值
  // 区分引用值
  var ret = typeof(target)
  var template = {
    '[object Array]': 'array',
    '[object Object]': 'object',
    '[object Number]': 'number - object',
    '[object Boolean]': 'boolean - object',
    '[object String]': 'string - object',
  }
  if (target === null) {
    return 'null'
  }
  if (ret === 'object') {
    // 数组 对象 包装类 用 Object.prototype.toString
    var str = Object.prototype.toString.call(target)
    return template[str]
  } else {
    return ret
  }
}